	/**
	 * valor padrão para a resposta ajax do servidor.
	 */
	var resposta_ajax 			= "";				// resposta ajax
	var resposta_ajax_alerta	= null;				// mensagem de alerta
	var resposta_ajax_depois	= null;				// script a ser executado depois da resposta do servidor
	var resposta_ajax_oculta	= 3000;				// time out para ocultar a mensagem ajax
	
	/**
	 * função Instancia Ajax
	 * retorna objeto xhmtlrequest
	 */
	function createXMLHttpRequestObject() 
	{
		try {
			// Para todos os Browsers, EXCETO IE6 e anteriores;
			xmlHttp = new XMLHttpRequest();
		} 
	  catch(e) 
	  {
		// Para o IE6 e anteriores
		var XMLHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
										"MSXML2.XMLHTTP.5.0",
										"MSXML2.XMLHTTP.4.0",
										"MSXML2.XMLHTTP.3.0",
										"MSXML2.XMLHTTP",
										"Microsoft.XMLHTTP");
		// tente achar qual
		for (var i=0; i<XMLHttpVersions.length && !xmlHttp; i++) {
			try {
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			} catch(e) {}
		}
	}
	if (!xmlHttp)
		alert("Erro criando o Objeto de XMLHtttpRequest!");
	else 
		return xmlHttp;
	}
	
	/**
	 * Função ajax
	 *
	 * Executa xhtmlrequest enviado o formulário ativo para o index.php
	 *
	 * - parametros deve conter todos os elementos do formulário ativo. 
	 * - Pode-se usar a função getParametros para recuperar todos os elementos.
	 * - Não esquecer de colocar a chave que será executada no servidor. 
 	 */
	function getValidacaoServidor(formulario) 
	{
		// resposta ajax xml
		var xmlDoc 	= null;
		
		// objeto form
		var objForm = document.forms[formulario];
		
		// action
		var destino = objForm.getAttribute('action');

		// exibindo ícon reload
		if (document.getElementById("reload_ajax") != null)
		{
			document.getElementById("reload_ajax").style.display = "block";
		}
		
		// travando todo formulário

		// recuperando todos os elementos do formulário
		var parametros = getParametros(objForm)+"&ajax=1";

		// instanciando ajax
		try { var xmlhttp = createXMLHttpRequestObject(); } catch(e) { alert(e); }

		// abrindo ajax
		xmlhttp.open("POST", destino, true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.onreadystatechange = function()	
		{
			if (xmlhttp.readyState == 4) 
			{
					if (xmlhttp.status == 200) 
					{
						// zerando a resposta ajax anterior
						resposta_ajax		= "";
						resposta_ajax_alerta= "";
						
						// recuperando a resposta ajax em xml
						xmlDoc = xmlhttp.responseXML;
						if (xmlDoc == null)
						{
							alert("A resposta do servidor foi um valor invállido, verique se a resposta está no formato XML");
							resposta_ajax 		= xmlhttp.responseText;
						} else
						{
							if (xmlDoc.getElementsByTagName("resposta_ajax")[0] != undefined)
							{
								if (xmlDoc.getElementsByTagName("resposta_ajax")[0].childNodes[0] 				!= undefined) resposta_ajax			= xmlDoc.getElementsByTagName("resposta_ajax")[0].childNodes[0].nodeValue;
								if (xmlDoc.getElementsByTagName("resposta_ajax_alerta")[0].childNodes[0] 		!= undefined) resposta_ajax_alerta	= xmlDoc.getElementsByTagName("resposta_ajax_alerta")[0].childNodes[0].nodeValue;
								if (xmlDoc.getElementsByTagName("resposta_ajax_depois")[0].childNodes[0] 		!= undefined) resposta_ajax_depois	= xmlDoc.getElementsByTagName("resposta_ajax_depois")[0].childNodes[0].nodeValue;
								if (xmlDoc.getElementsByTagName("resposta_ajax_oculta")[0].childNodes[0] 		!= undefined) resposta_ajax_oculta	= xmlDoc.getElementsByTagName("resposta_ajax_oculta")[0].childNodes[0].nodeValue;
							} else
							{
								alert("Erro ao tratar a resposta ajax, verifique se a resposta está num formato XML realmente válido");
								resposta_ajax 			= xmlhttp.responseText;
								resposta_ajax_oculta 	= 0;
							}
						}

						// ocultando o ícone reload
						if (document.getElementById("reload_ajax") != null) document.getElementById("reload_ajax").style.display = "none";
						
						if (resposta_ajax_depois != null && resposta_ajax_depois != 0)
						{
							eval(resposta_ajax_depois+"()");
						} else
						{
							// exibindo a resposta
							if (document.getElementById("resposta_ajax") != null)
							{
								if (resposta_ajax_alerta>0)
								{
									document.getElementById("resposta_ajax").className = "alerta_ajax";
								} else
								{
									document.getElementById("resposta_ajax").className = "ok_ajax";
								}
								document.getElementById("resposta_ajax").style.display = "block";
								document.getElementById("resposta_ajax").innerHTML = resposta_ajax;
								if (resposta_ajax_oculta) setTimeout("document.getElementById('resposta_ajax').style.display='none';",resposta_ajax_oculta);
							} else 
							{
								alert("A resposta não pode ser exibida porque ainda falta uma div com o nome resposta_ajax");
							}
						}
					}
			}
		}
		xmlhttp.send(parametros);
		return false;
	}

	/**
	 * Função getParametros
	 * retorna todos elementos de um formulário, com seu nome e valor
	 */
	function getParametros(objForm) {
		var parametros 		= "";
		var valor 			= "";

		if (objForm == null) 
		{
			alert("O formulário "+formulario+" é inválido !!!");
			return false;
		}

		// incrementando parâmetro a parâmetro
		for (i=0; i<objForm.elements.length; i++) 
		{
			nome_campo 	= objForm.elements[i].name;
			valor		= objForm.elements[i].value;
			switch(objForm.elements[i].type) {
				case "radio":
					if (objForm.elements[i] != null) 
						if (objForm.elements[i].checked) 
							parametros = parametros+"&"+objForm.elements[i].name+"="+objForm.elements[i].value;
					break;
				case "checkbox":
					if (objForm.elements[i] != null) 
						if (objForm.elements[i].checked) 
							parametros = parametros+"&"+objForm.elements[i].name+"="+objForm.elements[i].value;
					break;
				case "password":
				case "senha":
					if (objForm.elements[i] != null && valor) 
						parametros = parametros+"&"+objForm.elements[i].name+"="+hex_md5(valor);
					else
						parametros = parametros+"&"+objForm.elements[i].name+"="+valor;
					break;
				default:
					if (objForm.elements[i] != null) 
					{
						valor = objForm.elements[i].value;
					} else alert("Erro: Não foi possível recuperar o valor de "+nome_campo);
					
					if (objForm.elements[i] != null) 
					{
						parametros = parametros+"&"+objForm.elements[i].name+"="+valor;
					}
					
					break;
			}
		}
		return parametros;
	}
	
	/**
	* replace all
	* função str_replace do php
	* @return string
	*/
	function replaceAll(str, de, para) {
		var pos = str.indexOf(de);
		while (pos > -1) {
			str = str.replace(de, para);
			pos = str.indexOf(de);
		}
		return (str);
	}


